package edu.suda.cxtz.service;


import edu.suda.cxtz.entity.Dept;
import edu.suda.cxtz.entity.dto.DeptDto;
import edu.suda.cxtz.entity.dto.DeptQueryCriteria;
import edu.suda.cxtz.utils.PageResult;
import org.springframework.data.domain.Pageable;

import java.util.List;
import java.util.Set;

public interface DeptService {

    //查询所有部门
    List<DeptDto> queryAll(DeptQueryCriteria criteria, Boolean isQuery) throws Exception;

    PageResult<DeptDto> queryAll(DeptQueryCriteria criteria, Pageable pageable) throws Exception;

    //查询所有部门，返回实体
    List<Dept> queryAll();

    //根据id查询部门
    DeptDto findById(Long id);

    //创建部门
    void create(Dept resources);

    //更新部门
    void update(Dept resources);

    //删除部门
    void delete(Set<DeptDto> deptDtoSet);

    //根据pid查询部门
    List<Dept> findByPid(long pid);

    //根据角色id查询部门
    Set<Dept> findByRoleId(Long id);

    //下载部门
//    void download(List<DeptDto> queryAll, HttpServletResponse response) throws IOException;

    //获取需要删除的部门
    Set<DeptDto> getDeleteDepts(List<Dept> deptList, Set<DeptDto> deptDtos);

    //获取上级部门
    List<DeptDto> getSuperior(DeptDto deptDto, List<Dept> depts);

    //构建部门树
    Object buildTree(List<DeptDto> deptDtoList);

    //获取部门下级部门
    List<Long> getDeptChildren(List<Dept> deptList);

    //验证部门是否被角色使用
    void verification(Set<DeptDto> deptDtosSet);
}
